

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    
    <title>19.2. sgmllib — Simple SGML parser &mdash; Python v2.7.8 documentation</title>
    <link rel="stylesheet" href="../_static/default.css" type="text/css" />
    <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
    <script type="text/javascript">
      var DOCUMENTATION_OPTIONS = {
        URL_ROOT:    '../',
        VERSION:     '2.7.8',
        COLLAPSE_INDEX: false,
        FILE_SUFFIX: '.html',
        HAS_SOURCE:  true
      };
    </script>
    <script type="text/javascript" src="../_static/jquery.js"></script>
    <script type="text/javascript" src="../_static/underscore.js"></script>
    <script type="text/javascript" src="../_static/doctools.js"></script>
    <script type="text/javascript" src="../_static/sidebar.js"></script>
    <link rel="search" type="application/opensearchdescription+xml"
          title="Search within Python v2.7.8 documentation"
          href="../_static/opensearch.xml"/>
    <link rel="author" title="About these documents" href="../about.html" />
    <link rel="copyright" title="Copyright" href="../copyright.html" />
    <link rel="top" title="Python v2.7.8 documentation" href="../index.html" />
    <link rel="up" title="19. Structured Markup Processing Tools" href="markup.html" />
    <link rel="next" title="19.3. htmllib — A parser for HTML documents" href="htmllib.html" />
    <link rel="prev" title="19.1. HTMLParser — Simple HTML and XHTML parser" href="htmlparser.html" />
    <link rel="shortcut icon" type="image/png" href="../_static/py.png" />
    <script type="text/javascript" src="../_static/copybutton.js"></script>
    
 
    

  </head>
  <body>  
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             accesskey="I">index</a></li>
        <li class="right" >
          <a href="../py-modindex.html" title="Python Module Index"
             >modules</a> |</li>
        <li class="right" >
          <a href="htmllib.html" title="19.3. htmllib — A parser for HTML documents"
             accesskey="N">next</a> |</li>
        <li class="right" >
          <a href="htmlparser.html" title="19.1. HTMLParser — Simple HTML and XHTML parser"
             accesskey="P">previous</a> |</li>
        <li><img src="../_static/py.png" alt=""
                 style="vertical-align: middle; margin-top: -1px"/></li>
        <li><a href="http://www.python.org/">Python</a> &raquo;</li>
        <li>
          <a href="../index.html">Python v2.7.8 documentation</a> &raquo;
        </li>

          <li><a href="index.html" >The Python Standard Library</a> &raquo;</li>
          <li><a href="markup.html" accesskey="U">19. Structured Markup Processing Tools</a> &raquo;</li> 
      </ul>
    </div>    

    <div class="document">
      <div class="documentwrapper">
        <div class="bodywrapper">
          <div class="body">
            
  <div class="section" id="module-sgmllib">
<span id="sgmllib-simple-sgml-parser"></span><h1>19.2. <a class="reference internal" href="#module-sgmllib" title="sgmllib: Only as much of an SGML parser as needed to parse HTML. (deprecated)"><tt class="xref py py-mod docutils literal"><span class="pre">sgmllib</span></tt></a> &#8212; Simple SGML parser<a class="headerlink" href="#module-sgmllib" title="Permalink to this headline">¶</a></h1>
<p class="deprecated">
<span class="versionmodified">Deprecated since version 2.6: </span>The <a class="reference internal" href="#module-sgmllib" title="sgmllib: Only as much of an SGML parser as needed to parse HTML. (deprecated)"><tt class="xref py py-mod docutils literal"><span class="pre">sgmllib</span></tt></a> module has been removed in Python 3.</p>
<p id="index-0">This module defines a class <a class="reference internal" href="#sgmllib.SGMLParser" title="sgmllib.SGMLParser"><tt class="xref py py-class docutils literal"><span class="pre">SGMLParser</span></tt></a> which serves as the basis for
parsing text files formatted in SGML (Standard Generalized Mark-up Language).
In fact, it does not provide a full SGML parser &#8212; it only parses SGML insofar
as it is used by HTML, and the module only exists as a base for the
<a class="reference internal" href="htmllib.html#module-htmllib" title="htmllib: A parser for HTML documents. (deprecated)"><tt class="xref py py-mod docutils literal"><span class="pre">htmllib</span></tt></a> module.  Another HTML parser which supports XHTML and offers a
somewhat different interface is available in the <a class="reference internal" href="htmlparser.html#module-HTMLParser" title="HTMLParser: A simple parser that can handle HTML and XHTML."><tt class="xref py py-mod docutils literal"><span class="pre">HTMLParser</span></tt></a> module.</p>
<dl class="class">
<dt id="sgmllib.SGMLParser">
<em class="property">class </em><tt class="descclassname">sgmllib.</tt><tt class="descname">SGMLParser</tt><a class="headerlink" href="#sgmllib.SGMLParser" title="Permalink to this definition">¶</a></dt>
<dd><p>The <a class="reference internal" href="#sgmllib.SGMLParser" title="sgmllib.SGMLParser"><tt class="xref py py-class docutils literal"><span class="pre">SGMLParser</span></tt></a> class is instantiated without arguments. The parser is
hardcoded to recognize the following constructs:</p>
<ul class="simple">
<li>Opening and closing tags of the form <tt class="docutils literal"><span class="pre">&lt;tag</span> <span class="pre">attr=&quot;value&quot;</span> <span class="pre">...&gt;</span></tt> and
<tt class="docutils literal"><span class="pre">&lt;/tag&gt;</span></tt>, respectively.</li>
<li>Numeric character references of the form <tt class="docutils literal"><span class="pre">&amp;#name;</span></tt>.</li>
<li>Entity references of the form <tt class="docutils literal"><span class="pre">&amp;name;</span></tt>.</li>
<li>SGML comments of the form <tt class="docutils literal"><span class="pre">&lt;!--text--&gt;</span></tt>.  Note that spaces, tabs, and
newlines are allowed between the trailing <tt class="docutils literal"><span class="pre">&gt;</span></tt> and the immediately preceding
<tt class="docutils literal"><span class="pre">--</span></tt>.</li>
</ul>
</dd></dl>

<p>A single exception is defined as well:</p>
<dl class="exception">
<dt id="sgmllib.SGMLParseError">
<em class="property">exception </em><tt class="descclassname">sgmllib.</tt><tt class="descname">SGMLParseError</tt><a class="headerlink" href="#sgmllib.SGMLParseError" title="Permalink to this definition">¶</a></dt>
<dd><p>Exception raised by the <a class="reference internal" href="#sgmllib.SGMLParser" title="sgmllib.SGMLParser"><tt class="xref py py-class docutils literal"><span class="pre">SGMLParser</span></tt></a> class when it encounters an error
while parsing.</p>
<p class="versionadded">
<span class="versionmodified">New in version 2.1.</span></p>
</dd></dl>

<p><a class="reference internal" href="#sgmllib.SGMLParser" title="sgmllib.SGMLParser"><tt class="xref py py-class docutils literal"><span class="pre">SGMLParser</span></tt></a> instances have the following methods:</p>
<dl class="method">
<dt id="sgmllib.SGMLParser.reset">
<tt class="descclassname">SGMLParser.</tt><tt class="descname">reset</tt><big>(</big><big>)</big><a class="headerlink" href="#sgmllib.SGMLParser.reset" title="Permalink to this definition">¶</a></dt>
<dd><p>Reset the instance.  Loses all unprocessed data.  This is called implicitly at
instantiation time.</p>
</dd></dl>

<dl class="method">
<dt id="sgmllib.SGMLParser.setnomoretags">
<tt class="descclassname">SGMLParser.</tt><tt class="descname">setnomoretags</tt><big>(</big><big>)</big><a class="headerlink" href="#sgmllib.SGMLParser.setnomoretags" title="Permalink to this definition">¶</a></dt>
<dd><p>Stop processing tags.  Treat all following input as literal input (CDATA).
(This is only provided so the HTML tag <tt class="docutils literal"><span class="pre">&lt;PLAINTEXT&gt;</span></tt> can be implemented.)</p>
</dd></dl>

<dl class="method">
<dt id="sgmllib.SGMLParser.setliteral">
<tt class="descclassname">SGMLParser.</tt><tt class="descname">setliteral</tt><big>(</big><big>)</big><a class="headerlink" href="#sgmllib.SGMLParser.setliteral" title="Permalink to this definition">¶</a></dt>
<dd><p>Enter literal mode (CDATA mode).</p>
</dd></dl>

<dl class="method">
<dt id="sgmllib.SGMLParser.feed">
<tt class="descclassname">SGMLParser.</tt><tt class="descname">feed</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#sgmllib.SGMLParser.feed" title="Permalink to this definition">¶</a></dt>
<dd><p>Feed some text to the parser.  It is processed insofar as it consists of
complete elements; incomplete data is buffered until more data is fed or
<a class="reference internal" href="#sgmllib.SGMLParser.close" title="sgmllib.SGMLParser.close"><tt class="xref py py-meth docutils literal"><span class="pre">close()</span></tt></a> is called.</p>
</dd></dl>

<dl class="method">
<dt id="sgmllib.SGMLParser.close">
<tt class="descclassname">SGMLParser.</tt><tt class="descname">close</tt><big>(</big><big>)</big><a class="headerlink" href="#sgmllib.SGMLParser.close" title="Permalink to this definition">¶</a></dt>
<dd><p>Force processing of all buffered data as if it were followed by an end-of-file
mark.  This method may be redefined by a derived class to define additional
processing at the end of the input, but the redefined version should always call
<a class="reference internal" href="#sgmllib.SGMLParser.close" title="sgmllib.SGMLParser.close"><tt class="xref py py-meth docutils literal"><span class="pre">close()</span></tt></a>.</p>
</dd></dl>

<dl class="method">
<dt id="sgmllib.SGMLParser.get_starttag_text">
<tt class="descclassname">SGMLParser.</tt><tt class="descname">get_starttag_text</tt><big>(</big><big>)</big><a class="headerlink" href="#sgmllib.SGMLParser.get_starttag_text" title="Permalink to this definition">¶</a></dt>
<dd><p>Return the text of the most recently opened start tag.  This should not normally
be needed for structured processing, but may be useful in dealing with HTML &#8220;as
deployed&#8221; or for re-generating input with minimal changes (whitespace between
attributes can be preserved, etc.).</p>
</dd></dl>

<dl class="method">
<dt id="sgmllib.SGMLParser.handle_starttag">
<tt class="descclassname">SGMLParser.</tt><tt class="descname">handle_starttag</tt><big>(</big><em>tag</em>, <em>method</em>, <em>attributes</em><big>)</big><a class="headerlink" href="#sgmllib.SGMLParser.handle_starttag" title="Permalink to this definition">¶</a></dt>
<dd><p>This method is called to handle start tags for which either a <tt class="xref py py-meth docutils literal"><span class="pre">start_tag()</span></tt>
or <tt class="xref py py-meth docutils literal"><span class="pre">do_tag()</span></tt> method has been defined.  The <em>tag</em> argument is the name of
the tag converted to lower case, and the <em>method</em> argument is the bound method
which should be used to support semantic interpretation of the start tag. The
<em>attributes</em> argument is a list of <tt class="docutils literal"><span class="pre">(name,</span> <span class="pre">value)</span></tt> pairs containing the
attributes found inside the tag&#8217;s <tt class="docutils literal"><span class="pre">&lt;&gt;</span></tt> brackets.</p>
<p>The <em>name</em> has been translated to lower case. Double quotes and backslashes in
the <em>value</em> have been interpreted, as well as known character references and
known entity references terminated by a semicolon (normally, entity references
can be terminated by any non-alphanumerical character, but this would break the
very common case of <tt class="docutils literal"><span class="pre">&lt;A</span> <span class="pre">HREF=&quot;url?spam=1&amp;eggs=2&quot;&gt;</span></tt> when <tt class="docutils literal"><span class="pre">eggs</span></tt> is a valid
entity name).</p>
<p>For instance, for the tag <tt class="docutils literal"><span class="pre">&lt;A</span> <span class="pre">HREF=&quot;http://www.cwi.nl/&quot;&gt;</span></tt>, this method would
be called as <tt class="docutils literal"><span class="pre">unknown_starttag('a',</span> <span class="pre">[('href',</span> <span class="pre">'http://www.cwi.nl/')])</span></tt>.  The
base implementation simply calls <em>method</em> with <em>attributes</em> as the only
argument.</p>
<p class="versionadded">
<span class="versionmodified">New in version 2.5: </span>Handling of entity and character references within attribute values.</p>
</dd></dl>

<dl class="method">
<dt id="sgmllib.SGMLParser.handle_endtag">
<tt class="descclassname">SGMLParser.</tt><tt class="descname">handle_endtag</tt><big>(</big><em>tag</em>, <em>method</em><big>)</big><a class="headerlink" href="#sgmllib.SGMLParser.handle_endtag" title="Permalink to this definition">¶</a></dt>
<dd><p>This method is called to handle endtags for which an <tt class="xref py py-meth docutils literal"><span class="pre">end_tag()</span></tt> method has
been defined.  The <em>tag</em> argument is the name of the tag converted to lower
case, and the <em>method</em> argument is the bound method which should be used to
support semantic interpretation of the end tag.  If no <tt class="xref py py-meth docutils literal"><span class="pre">end_tag()</span></tt> method is
defined for the closing element, this handler is not called.  The base
implementation simply calls <em>method</em>.</p>
</dd></dl>

<dl class="method">
<dt id="sgmllib.SGMLParser.handle_data">
<tt class="descclassname">SGMLParser.</tt><tt class="descname">handle_data</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#sgmllib.SGMLParser.handle_data" title="Permalink to this definition">¶</a></dt>
<dd><p>This method is called to process arbitrary data.  It is intended to be
overridden by a derived class; the base class implementation does nothing.</p>
</dd></dl>

<dl class="method">
<dt id="sgmllib.SGMLParser.handle_charref">
<tt class="descclassname">SGMLParser.</tt><tt class="descname">handle_charref</tt><big>(</big><em>ref</em><big>)</big><a class="headerlink" href="#sgmllib.SGMLParser.handle_charref" title="Permalink to this definition">¶</a></dt>
<dd><p>This method is called to process a character reference of the form <tt class="docutils literal"><span class="pre">&amp;#ref;</span></tt>.
The base implementation uses <a class="reference internal" href="#sgmllib.SGMLParser.convert_charref" title="sgmllib.SGMLParser.convert_charref"><tt class="xref py py-meth docutils literal"><span class="pre">convert_charref()</span></tt></a> to convert the reference to
a string.  If that method returns a string, it is passed to <a class="reference internal" href="#sgmllib.SGMLParser.handle_data" title="sgmllib.SGMLParser.handle_data"><tt class="xref py py-meth docutils literal"><span class="pre">handle_data()</span></tt></a>,
otherwise <tt class="docutils literal"><span class="pre">unknown_charref(ref)</span></tt> is called to handle the error.</p>
<p class="versionchanged">
<span class="versionmodified">Changed in version 2.5: </span>Use <a class="reference internal" href="#sgmllib.SGMLParser.convert_charref" title="sgmllib.SGMLParser.convert_charref"><tt class="xref py py-meth docutils literal"><span class="pre">convert_charref()</span></tt></a> instead of hard-coding the conversion.</p>
</dd></dl>

<dl class="method">
<dt id="sgmllib.SGMLParser.convert_charref">
<tt class="descclassname">SGMLParser.</tt><tt class="descname">convert_charref</tt><big>(</big><em>ref</em><big>)</big><a class="headerlink" href="#sgmllib.SGMLParser.convert_charref" title="Permalink to this definition">¶</a></dt>
<dd><p>Convert a character reference to a string, or <tt class="xref docutils literal"><span class="pre">None</span></tt>.  <em>ref</em> is the reference
passed in as a string.  In the base implementation, <em>ref</em> must be a decimal
number in the range 0-255.  It converts the code point found using the
<a class="reference internal" href="#sgmllib.SGMLParser.convert_codepoint" title="sgmllib.SGMLParser.convert_codepoint"><tt class="xref py py-meth docutils literal"><span class="pre">convert_codepoint()</span></tt></a> method. If <em>ref</em> is invalid or out of range, this
method returns <tt class="xref docutils literal"><span class="pre">None</span></tt>.  This method is called by the default
<a class="reference internal" href="#sgmllib.SGMLParser.handle_charref" title="sgmllib.SGMLParser.handle_charref"><tt class="xref py py-meth docutils literal"><span class="pre">handle_charref()</span></tt></a> implementation and by the attribute value parser.</p>
<p class="versionadded">
<span class="versionmodified">New in version 2.5.</span></p>
</dd></dl>

<dl class="method">
<dt id="sgmllib.SGMLParser.convert_codepoint">
<tt class="descclassname">SGMLParser.</tt><tt class="descname">convert_codepoint</tt><big>(</big><em>codepoint</em><big>)</big><a class="headerlink" href="#sgmllib.SGMLParser.convert_codepoint" title="Permalink to this definition">¶</a></dt>
<dd><p>Convert a codepoint to a <a class="reference internal" href="functions.html#str" title="str"><tt class="xref py py-class docutils literal"><span class="pre">str</span></tt></a> value.  Encodings can be handled here if
appropriate, though the rest of <a class="reference internal" href="#module-sgmllib" title="sgmllib: Only as much of an SGML parser as needed to parse HTML. (deprecated)"><tt class="xref py py-mod docutils literal"><span class="pre">sgmllib</span></tt></a> is oblivious on this matter.</p>
<p class="versionadded">
<span class="versionmodified">New in version 2.5.</span></p>
</dd></dl>

<dl class="method">
<dt id="sgmllib.SGMLParser.handle_entityref">
<tt class="descclassname">SGMLParser.</tt><tt class="descname">handle_entityref</tt><big>(</big><em>ref</em><big>)</big><a class="headerlink" href="#sgmllib.SGMLParser.handle_entityref" title="Permalink to this definition">¶</a></dt>
<dd><p>This method is called to process a general entity reference of the form
<tt class="docutils literal"><span class="pre">&amp;ref;</span></tt> where <em>ref</em> is an general entity reference.  It converts <em>ref</em> by
passing it to <a class="reference internal" href="#sgmllib.SGMLParser.convert_entityref" title="sgmllib.SGMLParser.convert_entityref"><tt class="xref py py-meth docutils literal"><span class="pre">convert_entityref()</span></tt></a>.  If a translation is returned, it calls
the method <a class="reference internal" href="#sgmllib.SGMLParser.handle_data" title="sgmllib.SGMLParser.handle_data"><tt class="xref py py-meth docutils literal"><span class="pre">handle_data()</span></tt></a> with the translation; otherwise, it calls the
method <tt class="docutils literal"><span class="pre">unknown_entityref(ref)</span></tt>. The default <tt class="xref py py-attr docutils literal"><span class="pre">entitydefs</span></tt> defines
translations for <tt class="docutils literal"><span class="pre">&amp;amp;</span></tt>, <tt class="docutils literal"><span class="pre">&amp;apos</span></tt>, <tt class="docutils literal"><span class="pre">&amp;gt;</span></tt>, <tt class="docutils literal"><span class="pre">&amp;lt;</span></tt>, and <tt class="docutils literal"><span class="pre">&amp;quot;</span></tt>.</p>
<p class="versionchanged">
<span class="versionmodified">Changed in version 2.5: </span>Use <a class="reference internal" href="#sgmllib.SGMLParser.convert_entityref" title="sgmllib.SGMLParser.convert_entityref"><tt class="xref py py-meth docutils literal"><span class="pre">convert_entityref()</span></tt></a> instead of hard-coding the conversion.</p>
</dd></dl>

<dl class="method">
<dt id="sgmllib.SGMLParser.convert_entityref">
<tt class="descclassname">SGMLParser.</tt><tt class="descname">convert_entityref</tt><big>(</big><em>ref</em><big>)</big><a class="headerlink" href="#sgmllib.SGMLParser.convert_entityref" title="Permalink to this definition">¶</a></dt>
<dd><p>Convert a named entity reference to a <a class="reference internal" href="functions.html#str" title="str"><tt class="xref py py-class docutils literal"><span class="pre">str</span></tt></a> value, or <tt class="xref docutils literal"><span class="pre">None</span></tt>.  The
resulting value will not be parsed.  <em>ref</em> will be only the name of the entity.
The default implementation looks for <em>ref</em> in the instance (or class) variable
<tt class="xref py py-attr docutils literal"><span class="pre">entitydefs</span></tt> which should be a mapping from entity names to corresponding
translations.  If no translation is available for <em>ref</em>, this method returns
<tt class="xref docutils literal"><span class="pre">None</span></tt>.  This method is called by the default <a class="reference internal" href="#sgmllib.SGMLParser.handle_entityref" title="sgmllib.SGMLParser.handle_entityref"><tt class="xref py py-meth docutils literal"><span class="pre">handle_entityref()</span></tt></a>
implementation and by the attribute value parser.</p>
<p class="versionadded">
<span class="versionmodified">New in version 2.5.</span></p>
</dd></dl>

<dl class="method">
<dt id="sgmllib.SGMLParser.handle_comment">
<tt class="descclassname">SGMLParser.</tt><tt class="descname">handle_comment</tt><big>(</big><em>comment</em><big>)</big><a class="headerlink" href="#sgmllib.SGMLParser.handle_comment" title="Permalink to this definition">¶</a></dt>
<dd><p>This method is called when a comment is encountered.  The <em>comment</em> argument is
a string containing the text between the <tt class="docutils literal"><span class="pre">&lt;!--</span></tt> and <tt class="docutils literal"><span class="pre">--&gt;</span></tt> delimiters, but
not the delimiters themselves.  For example, the comment <tt class="docutils literal"><span class="pre">&lt;!--text--&gt;</span></tt> will
cause this method to be called with the argument <tt class="docutils literal"><span class="pre">'text'</span></tt>.  The default method
does nothing.</p>
</dd></dl>

<dl class="method">
<dt id="sgmllib.SGMLParser.handle_decl">
<tt class="descclassname">SGMLParser.</tt><tt class="descname">handle_decl</tt><big>(</big><em>data</em><big>)</big><a class="headerlink" href="#sgmllib.SGMLParser.handle_decl" title="Permalink to this definition">¶</a></dt>
<dd><p>Method called when an SGML declaration is read by the parser.  In practice, the
<tt class="docutils literal"><span class="pre">DOCTYPE</span></tt> declaration is the only thing observed in HTML, but the parser does
not discriminate among different (or broken) declarations.  Internal subsets in
a <tt class="docutils literal"><span class="pre">DOCTYPE</span></tt> declaration are not supported.  The <em>data</em> parameter will be the
entire contents of the declaration inside the <tt class="docutils literal"><span class="pre">&lt;!</span></tt>...<tt class="docutils literal"><span class="pre">&gt;</span></tt> markup.  The
default implementation does nothing.</p>
</dd></dl>

<dl class="method">
<dt id="sgmllib.SGMLParser.report_unbalanced">
<tt class="descclassname">SGMLParser.</tt><tt class="descname">report_unbalanced</tt><big>(</big><em>tag</em><big>)</big><a class="headerlink" href="#sgmllib.SGMLParser.report_unbalanced" title="Permalink to this definition">¶</a></dt>
<dd><p>This method is called when an end tag is found which does not correspond to any
open element.</p>
</dd></dl>

<dl class="method">
<dt id="sgmllib.SGMLParser.unknown_starttag">
<tt class="descclassname">SGMLParser.</tt><tt class="descname">unknown_starttag</tt><big>(</big><em>tag</em>, <em>attributes</em><big>)</big><a class="headerlink" href="#sgmllib.SGMLParser.unknown_starttag" title="Permalink to this definition">¶</a></dt>
<dd><p>This method is called to process an unknown start tag.  It is intended to be
overridden by a derived class; the base class implementation does nothing.</p>
</dd></dl>

<dl class="method">
<dt id="sgmllib.SGMLParser.unknown_endtag">
<tt class="descclassname">SGMLParser.</tt><tt class="descname">unknown_endtag</tt><big>(</big><em>tag</em><big>)</big><a class="headerlink" href="#sgmllib.SGMLParser.unknown_endtag" title="Permalink to this definition">¶</a></dt>
<dd><p>This method is called to process an unknown end tag.  It is intended to be
overridden by a derived class; the base class implementation does nothing.</p>
</dd></dl>

<dl class="method">
<dt id="sgmllib.SGMLParser.unknown_charref">
<tt class="descclassname">SGMLParser.</tt><tt class="descname">unknown_charref</tt><big>(</big><em>ref</em><big>)</big><a class="headerlink" href="#sgmllib.SGMLParser.unknown_charref" title="Permalink to this definition">¶</a></dt>
<dd><p>This method is called to process unresolvable numeric character references.
Refer to <a class="reference internal" href="#sgmllib.SGMLParser.handle_charref" title="sgmllib.SGMLParser.handle_charref"><tt class="xref py py-meth docutils literal"><span class="pre">handle_charref()</span></tt></a> to determine what is handled by default.  It is
intended to be overridden by a derived class; the base class implementation does
nothing.</p>
</dd></dl>

<dl class="method">
<dt id="sgmllib.SGMLParser.unknown_entityref">
<tt class="descclassname">SGMLParser.</tt><tt class="descname">unknown_entityref</tt><big>(</big><em>ref</em><big>)</big><a class="headerlink" href="#sgmllib.SGMLParser.unknown_entityref" title="Permalink to this definition">¶</a></dt>
<dd><p>This method is called to process an unknown entity reference.  It is intended to
be overridden by a derived class; the base class implementation does nothing.</p>
</dd></dl>

<p>Apart from overriding or extending the methods listed above, derived classes may
also define methods of the following form to define processing of specific tags.
Tag names in the input stream are case independent; the <em>tag</em> occurring in
method names must be in lower case:</p>
<dl class="method">
<dt>
<tt class="descclassname">SGMLParser.</tt><tt class="descname">start_tag</tt><big>(</big><em>attributes</em><big>)</big></dt>
<dd><p>This method is called to process an opening tag <em>tag</em>.  It has preference over
<tt class="xref py py-meth docutils literal"><span class="pre">do_tag()</span></tt>.  The <em>attributes</em> argument has the same meaning as described for
<tt class="xref py py-meth docutils literal"><span class="pre">handle_starttag()</span></tt> above.</p>
</dd></dl>

<dl class="method">
<dt>
<tt class="descclassname">SGMLParser.</tt><tt class="descname">do_tag</tt><big>(</big><em>attributes</em><big>)</big></dt>
<dd><p>This method is called to process an opening tag <em>tag</em>  for which no
<tt class="xref py py-meth docutils literal"><span class="pre">start_tag()</span></tt> method is defined.   The <em>attributes</em> argument has the same
meaning as described for <tt class="xref py py-meth docutils literal"><span class="pre">handle_starttag()</span></tt> above.</p>
</dd></dl>

<dl class="method">
<dt>
<tt class="descclassname">SGMLParser.</tt><tt class="descname">end_tag</tt><big>(</big><big>)</big></dt>
<dd><p>This method is called to process a closing tag <em>tag</em>.</p>
</dd></dl>

<p>Note that the parser maintains a stack of open elements for which no end tag has
been found yet.  Only tags processed by <tt class="xref py py-meth docutils literal"><span class="pre">start_tag()</span></tt> are pushed on this
stack.  Definition of an <tt class="xref py py-meth docutils literal"><span class="pre">end_tag()</span></tt> method is optional for these tags.  For
tags processed by <tt class="xref py py-meth docutils literal"><span class="pre">do_tag()</span></tt> or by <tt class="xref py py-meth docutils literal"><span class="pre">unknown_tag()</span></tt>, no <tt class="xref py py-meth docutils literal"><span class="pre">end_tag()</span></tt>
method must be defined; if defined, it will not be used.  If both
<tt class="xref py py-meth docutils literal"><span class="pre">start_tag()</span></tt> and <tt class="xref py py-meth docutils literal"><span class="pre">do_tag()</span></tt> methods exist for a tag, the
<tt class="xref py py-meth docutils literal"><span class="pre">start_tag()</span></tt> method takes precedence.</p>
</div>


          </div>
        </div>
      </div>
      <div class="sphinxsidebar">
        <div class="sphinxsidebarwrapper">
  <h4>Previous topic</h4>
  <p class="topless"><a href="htmlparser.html"
                        title="previous chapter">19.1. <tt class="docutils literal docutils literal docutils literal"><span class="pre">HTMLParser</span></tt> &#8212; Simple HTML and XHTML parser</a></p>
  <h4>Next topic</h4>
  <p class="topless"><a href="htmllib.html"
                        title="next chapter">19.3. <tt class="docutils literal docutils literal"><span class="pre">htmllib</span></tt> &#8212; A parser for HTML documents</a></p>
<h3>This Page</h3>
<ul class="this-page-menu">
  <li><a href="../bugs.html">Report a Bug</a></li>
  <li><a href="../_sources/library/sgmllib.txt"
         rel="nofollow">Show Source</a></li>
</ul>

<div id="searchbox" style="display: none">
  <h3>Quick search</h3>
    <form class="search" action="../search.html" method="get">
      <input type="text" name="q" size="18" />
      <input type="submit" value="Go" />
      <input type="hidden" name="check_keywords" value="yes" />
      <input type="hidden" name="area" value="default" />
    </form>
    <p class="searchtip" style="font-size: 90%">
    Enter search terms or a module, class or function name.
    </p>
</div>
<script type="text/javascript">$('#searchbox').show(0);</script>
        </div>
      </div>
      <div class="clearer"></div>
    </div>  
    <div class="related">
      <h3>Navigation</h3>
      <ul>
        <li class="right" style="margin-right: 10px">
          <a href="../genindex.html" title="General Index"
             >index</a></li>
        <li class="right" >
          <a href="../py-modindex.html" title="Python Module Index"
             >modules</a> |</li>
        <li class="right" >
          <a href="htmllib.html" title="19.3. htmllib — A parser for HTML documents"
             >next</a> |</li>
        <li class="right" >
          <a href="htmlparser.html" title="19.1. HTMLParser — Simple HTML and XHTML parser"
             >previous</a> |</li>
        <li><img src="../_static/py.png" alt=""
                 style="vertical-align: middle; margin-top: -1px"/></li>
        <li><a href="http://www.python.org/">Python</a> &raquo;</li>
        <li>
          <a href="../index.html">Python v2.7.8 documentation</a> &raquo;
        </li>

          <li><a href="index.html" >The Python Standard Library</a> &raquo;</li>
          <li><a href="markup.html" >19. Structured Markup Processing Tools</a> &raquo;</li> 
      </ul>
    </div>  
    <div class="footer">
    &copy; <a href="../copyright.html">Copyright</a> 1990-2014, Python Software Foundation.
    <br />
    The Python Software Foundation is a non-profit corporation.
    <a href="http://www.python.org/psf/donations/">Please donate.</a>
    <br />
    Last updated on Jun 29, 2014.
    <a href="../bugs.html">Found a bug</a>?
    <br />
    Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 1.0.7.
    </div>

  </body>
</html>